<?php
declare (strict_types = 1);

namespace app\index\controller;

use think\facade\Request;
use think\facade\View;

class Index
{
    public function index()
    {
        //[访问规则]
        //pathinfo 访问模式 : 域名/入口文件/应用/控制器/方法
        //url = http://tp26.com/index.php/index/index/index
        //[控制器定义]
        //目录使用小写+下划线(对应应用目录)
        //控制器文件才用驼峰法命名(首字母大写)
        //控制器 以.php为后缀
        //命名空间的路径和类库文件所在路径一致
        //控制器类名和文件名保持一致 统一才用驼峰法命名 (首字母大写);
        //方法的命名使用驼峰法(首字母小写)
        //调试模式 将.example.env文件 改成.env



        //调用数据库 CURD
        ////数据发送至视图中
//        return '您好！这是一个[index]示例应用、index控制器、index方法';
        //输出JSON
//        $data=[
//            'id'=>1,
//            'name'=>'zx'
//        ];
//        return json($data);
        //[视图定义]
        //view目录下简历一个对应控制器的文件夹
        //简历一个对应方法的html页 方法名大写转小写加下划线 以.html结尾



        //[渲染输出]
        //参数:
        //没有参数时 默认渲染对应Html页
        //①模板表达式 :[应用@] [控制器/] 方法
        //②变量参数
        //return view('index@index/demo',$data);
        //return View::fetch('index@index/demo',$data);
        //return View::fetch();



        //渲染默认模板输出
        //默认渲染对应的Html页
        //view渲染视图的助手函数
        //参数:
        //①模板表达式
        //②变量参数
        //return view('index@index/demo',$data);

        //[url生成]
        //参数:
        //没有参数时 默认生成控制器方法自己本身的地址
        //①地址表达式  [应用/] [控制器/] 方法
        //②地址栏参数  关联数组
        //③伪静态后缀  默认true .html结尾
        //④域名   默认false
//        echo \think\facade\Route::buildUrl('admin/index/demo',['id'=>1,'name'=>'zx'])
//        ->suffix('.php')
//        ->domain('www.baidu.com');
        //[url助手函数]
        //view()
//        echo url('admin/index/demo',['id'=>1,'name'=>'zx'],'.php','www.baidu.com');
//
//        return View::fetch('index@index/index',$data);
        //[模板赋值]
        //标量 字符串 浮点 整型 布尔值 使用is_scalar函数判断 var_dump(is_scalar($str));
//        $str='tp26';
//        View::assign('str',$str);
        //一维数组
//        关联
        $data = [
            'id'=>1,
            'name'=>'tp26'
        ];
        View::assign('arr1',$data);
        //索引
        $data1 = [
            2,
            'shop26'
        ];
        View::assign('arr2',$data1);
        //多维数组
        $data2 = [
            [
                'id'=>3,
                'name'=>'啦啦啦'
            ],
            [
                'id'=>4,
                'name'=>'啦啦啦啦啦啦'
            ]
        ];
        View::assign('arr3',$data2);
        //对象
        $obj = new \stdClass();
        $obj->id = 5;
        $obj->name = '啦啦啦啦啦啦啦';
        View::assign('obj',$obj);
        //批量
        $data3 = [
            [
                'id'=>3,
                'name'=>'啦啦啦'
            ]
        ];
        View::assign($data3);
        //批量第二种方法
//        直接定义一个如$data3的数组,然后在return view里面,第一个参数为空,第二个参数传数组
        //在html页面输出方法和前面第一种方法一样

        //[循环标签]
        $data4 = [
            [
                'id'=>1,
                'name'=>'啦啦'
            ],
            [
                'id'=>2,
                'name'=>'啦啦'
            ],
            [
                'id'=>3,
                'name'=>'啦啦'
            ],
            [
                'id'=>4,
                'name'=>'啦啦'
            ]
        ];
        View::assign('arr6',$data4);
        //[比较标签]
        $str1=time();
        View::assign('str1',$str1);

        $param = Request::param();
        echo "<pre>";
        print_r($param);
        echo "</pre>";

       echo Request::action();
       echo Request::controller();
       echo Request::get('name','default','htmlspecialchars,trim,strip_tags');
//        return view();

    }
    public function demo()
    {
        //url = http://tp26.com/index.php/index/index/demo
        return '111';
    }
}
